package com.happy016.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import com.happy016.entity.user.User;
import com.happy016.service.user.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/*
   数据库名 dev ,详情配置看application-dev配置
   t_user 测试表
   CREATE TABLE `t_user` (
         `id` int(11) NOT NULL,
         `username` varchar(255) DEFAULT NULL,
         `telephone` varchar(255) DEFAULT NULL,
         `createTime` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
         `status` int(1) DEFAULT NULL,
     PRIMARY KEY (`id`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


 */

/**
 *
 * @author Linyb
 * create on 2017/8/4 10:27
 */
@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private IUserService userService;
    //=======================以下三个方法是使用封装好的方法,不需要再写额外代码都可以实现==========================================
    //=======================具体可以查看几个层的Base类,看实现方式==========================================
    /**
     * 获取全部
     * @author Linyb
     * create on 2017/8/4 10:36
     */
    @RequestMapping("/findAll")
    public @ResponseBody List<User> findAll(){
        return userService.findAll();
    }

    /**
     * 根据id获取
     * @author Linyb
     * create on 2017/8/4 10:36
     */
    @RequestMapping("/{id}")
    public String findByUser(@PathVariable Integer id,Model model){
        User user = userService.get(id); //获取id
        model.addAttribute("user",user);
        return "user";  //返回页面,这里使用的是thymeleaf
    }

    /**
     * 分页Demo
     * @author Linyb
     * create on 2017/8/4 10:42
     */
    @RequestMapping("/page")
    public @ResponseBody PageInfo<User> page(){
        PageHelper.startPage(1,10); //第一页   每页10条    @1
        List<User> users = userService.findAll();      //@2
        PageInfo<User> page = new PageInfo<>(users);
        return page;

        //这里需要注意一点:  @1跟@2必须就是上下行的关系(就是说@1跟@2里面不能有其它代码),跟实现原理有关,这里分页插件使用AOP的原理
    }

    //==============================以上那些都是使用已经封装好的方法=================================================================


    //==============================以下方法使用自己写的Sql实现=====================================================================
    @RequestMapping("/self")
    public  @ResponseBody List<User> self(){



        //一:如有这样的需求,获取状态为2的用户
            //实现1 ,根据已经封装好的Base层实现
               User user = new User();
               user.setStatus(2);
               userService.findAllByEntity(user);
            //实现2 ,自己写Sql 实现
               userService.findSelf1(2);


        //二,如这样的需求 查看username 是111开头的
        user = new User();
        user.setUsername("111");
        List<User> users = userService.findSelf2(user);

        return users;
    }
}
